efc58cdea3917b0b7e88240c03d51c2a2e64a62e,agent-simulator/src/com/cloud/agent/manager/MockStorageManagerImpl.java,MockStorageManagerImpl,Download,#DownloadCommand#,325

Before Change



    @Override
    public DownloadAnswer Download(DownloadCommand cmd) {
        MockSecStorageVO ssvo = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
        if (ssvo == null) {
            return new DownloadAnswer("can't find secondary storage", VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR);
        }
        

After Change


	@Override
	public DownloadAnswer Download(DownloadCommand cmd) {
		MockSecStorageVO ssvo = null;
		Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
		try {
			txn.start();
			ssvo = _mockSecStorageDao.findByUrl(cmd.getSecUrl());
			if (ssvo == null) {
				return new DownloadAnswer("can't find secondary storage",
						VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR);
			}
			txn.commit();
		} catch (Exception ex) {
			txn.rollback();
			throw new CloudRuntimeException("Error accessing secondary storage " + cmd.getSecUrl(), ex);
		} finally {
			txn.close();
            txn = Transaction.open(Transaction.CLOUD_DB);
            txn.close();
		}

		MockVolumeVO volume = new MockVolumeVO();
		volume.setPoolId(ssvo.getId());
		volume.setName(cmd.getName());
		volume.setPath(ssvo.getMountPoint() + cmd.getName());
		volume.setSize(0);
		volume.setType(MockVolumeType.TEMPLATE);
		volume.setStatus(Status.DOWNLOAD_IN_PROGRESS);
		txn = Transaction.open(Transaction.SIMULATOR_DB);
		try {
			txn.start();
			volume = _mockVolumeDao.persist(volume);
			txn.commit();
		} catch (Exception ex) {
			txn.rollback();
			throw new CloudRuntimeException("Error when saving volume " + volume, ex);
		} finally {
			txn.close();
            txn = Transaction.open(Transaction.CLOUD_DB);